Skip to content

Conversation

@echiugoog
Copy link
Contributor

@echiugoog echiugoog commented Nov 13, 2025

FIO benchmark updated to use a job file and output in JSON

  • JSON struct is mostly complete, but parts of it are not implemented and silently dropped
  • Benchmark takes approx 2m to run (4 x 30s jobs) + file layout time
  • Different jobs to measure random rw IOPs (4k block) vs Bandwidth (more jobs, 1M blocks)
  • 16g of disk space needed vs 5g previously
  • limitations
    • very limited number of queue depths tested to limit time needed to measure device
    • use of single randrw job to get read/write IOPs/bandwidth

@echiugoog echiugoog marked this pull request as draft November 20, 2025 20:13
and throughput. There is an increase in disk space needed to run now,
from 5G to 16G.
@echiugoog
Copy link
Contributor Author

Rebased to head

@echiugoog echiugoog marked this pull request as ready for review November 24, 2025 22:35
ramp_time=5s
runtime=120s
ioengine=sync
# check if .StorageDir is a directory
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The checks for existing, writeable directory with enough space to run the benchmark were added because these issues were run into by users in the past. Without these, diagnosis of failure to run was difficult.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in eace668

fi
# create temporary directory for fio test
test_dir=$(mktemp -d --tmpdir="{{.StorageDir}}")
sync
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sync and dropping caches isn't strictly necessary, but are good practice when running storage benchmarks

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put back in eace668

@harp-intel
Copy link
Contributor

Didn't try it yet, but assume this will fail on ARM targets because libaio support is missing.

@echiugoog
Copy link
Contributor Author

Didn't try it yet, but assume this will fail on ARM targets because libaio support is missing.

1aa168e should cross compile libaio and enable fio cross-compile to statically link libaio, it requires a newer unreleased fio tho

insufficient diskspace

log partial storage benchmark output if unable to find fio output
bandwidth test which uses the most diskspace

Add back in sync and dropping vm cache
@echiugoog
Copy link
Contributor Author

Didn't try it yet, but assume this will fail on ARM targets because libaio support is missing.

Completed testing, appears to be working fine on C4A (Arm neoverse v2)

@harp-intel
Copy link
Contributor

The build is failing. Run make check to see the error(s).

@harp-intel
Copy link
Contributor

Surprisingly, I was able to update the branch with the small change needed to get past the quality checkers.

Copy link
Contributor

@harp-intel harp-intel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @echiugoog
Great improvement to this benchmark.

@harp-intel harp-intel merged commit f1435e0 into intel:main Nov 27, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants